Load Datasets

suppressMessages(library(data.table))
suppressMessages(library(readxl))
suppressMessages(library(dplyr))
suppressMessages(library(stringr))
suppressMessages(library(ggplot2))
suppressMessages(library(ggcorrplot))
suppressMessages(library(tidyr))
suppressMessages(library(rstatix))

set.seed(7)
theme_set(theme_bw())
theme_settings <- theme(
  axis.title.x = element_text(angle = 0, color = "black"), 
  axis.title.y = element_text(angle = 90, color = "black"),
  axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1, size = 10),
  axis.text.y = element_text(size = 10),
  plot.title = element_text(hjust = 0.5),
)

# Metadata
coin_features <- fread("datasets/coin_features.csv") %>% as.data.frame()
ticker_info <- fread("datasets/ticker_info.csv") %>% as.data.frame()

Pre-COVID19

# Visualization
for (aspect in c("prices", "changes", "returns")) {
  for (factor in c("tech", "indices")) { # , "sp500"
    melt.data <- get(paste(aspect, factor, "melt", sep = "."))
    ts.chart <- ggplot(data = melt.data, aes(x = Date, y = Values, color = Ticker)) +
      ggtitle(paste("Movement of", aspect)) +
      geom_line() + 
      scale_y_continuous(trans = "log2") +
      theme(legend.position = "bottom")
    cor.chart <- get(paste(aspect, factor, "corplot", sep = "."))
    print(ts.chart)
    print(cor.chart)
  }
}
Warning in self$trans$transform(x) : NaNs produced
Warning: Transformation introduced infinite values in continuous y-axis
Warning: Removed 1961 row(s) containing missing values (geom_path).
Warning in self$trans$transform(x) : NaNs produced
Warning: Transformation introduced infinite values in continuous y-axis
Warning: Removed 2218 row(s) containing missing values (geom_path).
Warning in self$trans$transform(x) : NaNs produced
Warning: Transformation introduced infinite values in continuous y-axis
Warning: Removed 1961 row(s) containing missing values (geom_path).
Warning in self$trans$transform(x) : NaNs produced
Warning: Transformation introduced infinite values in continuous y-axis
Warning: Removed 2218 row(s) containing missing values (geom_path).

Peri-COVID19

Post-COVID19

LS0tCnRpdGxlOiAiUlExLTE6IENvcnJlbGF0aW9uIEFuYWx5c2lzIHdpdGggU3RvY2ssIFdvcmxkLCBDb21tb2RpdHkgSW5kaWNlcyIKYXV0aG9yOiAiQ1M1NjQgVGVhbSAxMCIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQpMb2FkIERhdGFzZXRzCmBgYHtyfQpzdXBwcmVzc01lc3NhZ2VzKGxpYnJhcnkoZGF0YS50YWJsZSkpCnN1cHByZXNzTWVzc2FnZXMobGlicmFyeShyZWFkeGwpKQpzdXBwcmVzc01lc3NhZ2VzKGxpYnJhcnkoZHBseXIpKQpzdXBwcmVzc01lc3NhZ2VzKGxpYnJhcnkoc3RyaW5ncikpCnN1cHByZXNzTWVzc2FnZXMobGlicmFyeShnZ3Bsb3QyKSkKc3VwcHJlc3NNZXNzYWdlcyhsaWJyYXJ5KGdnY29ycnBsb3QpKQpzdXBwcmVzc01lc3NhZ2VzKGxpYnJhcnkodGlkeXIpKQpzdXBwcmVzc01lc3NhZ2VzKGxpYnJhcnkocnN0YXRpeCkpCgpzZXQuc2VlZCg3KQp0aGVtZV9zZXQodGhlbWVfYncoKSkKdGhlbWVfc2V0dGluZ3MgPC0gdGhlbWUoCiAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gMCwgY29sb3IgPSAiYmxhY2siKSwgCiAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gOTAsIGNvbG9yID0gImJsYWNrIiksCiAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA5MCwgdmp1c3QgPSAwLjUsIGhqdXN0PTEsIHNpemUgPSAxMCksCiAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEwKSwKKQpjZW50ZXJfdGl0bGUgPC0gdGhlbWUoCiAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChoanVzdCA9IDAuNSkKKQoKIyBNZXRhZGF0YQpjb2luX2ZlYXR1cmVzIDwtIGZyZWFkKCJkYXRhc2V0cy9jb2luX2ZlYXR1cmVzLmNzdiIpICU+JSBhcy5kYXRhLmZyYW1lKCkKdGlja2VyX2luZm8gPC0gZnJlYWQoImRhdGFzZXRzL3RpY2tlcl9pbmZvLmNzdiIpICU+JSBhcy5kYXRhLmZyYW1lKCkKYGBgCgoKUHJlLUNPVklEMTkKYGBge3J9CgpuZGF5cyA8LSAzNjUKcHJpY2VzIDwtIGRhdGEuZnJhbWUobWF0cml4KG5yb3cgPSBuZGF5cywgbmNvbCA9IDApKQpjaGFuZ2VzIDwtIGRhdGEuZnJhbWUobWF0cml4KG5yb3cgPSBuZGF5cywgbmNvbCA9IDApKQpyZXR1cm5zIDwtIGRhdGEuZnJhbWUobWF0cml4KG5yb3cgPSBuZGF5cywgbmNvbCA9IDApKQp2b2xhdGlsaXR5IDwtIGRhdGEuZnJhbWUobWF0cml4KG5yb3cgPSBuZGF5cywgbmNvbCA9IDApKQoKcHJpY2VfY29scyA8LSBjKCJEYXRlIiwgIkNsb3NlIiwgIlZvbHVtZSIsICJjaGFuZ2UiLCAicmV0dXJucyIsICJ2b2xhdGlsaXR5IikKZm9yIChmbmFtZSBpbiBsaXN0LmZpbGVzKHBhc3RlKCJkYXRhc2V0cy9kYWlseS9jb2lucyIsIHNlcCA9ICIvIikpKSB7CiAgc3ltYm9sIDwtIHN0cl9zcGxpdChmbmFtZSwgIi0iLCBzaW1wbGlmeSA9IFQpWzFdCiAgdmFsdWVzIDwtIGZyZWFkKHBhc3RlKCJkYXRhc2V0cy9kYWlseS9jb2lucyIsIGZuYW1lLCBzZXAgPSAiLyIpKSAlPiUgZmlsdGVyKERhdGUgPj0gIjIwMTktMDEtMDEiICYgRGF0ZSA8PSAiMjAxOS0xMi0zMSIpICU+JSBzZWxlY3QoYWxsX29mKHByaWNlX2NvbHMpKSAlPiUgYXJyYW5nZShEYXRlKSAlPiUgZmlsbChldmVyeXRoaW5nKCksIC5kaXJlY3Rpb24gPSAiZG93bnVwIikgJT4lIHNlbGVjdF9pZihjb2xTdW1zKCFpcy5uYSguKSkgPiAwKQoKICBwcmljZXMkRGF0ZSA8LSB2YWx1ZXMkRGF0ZQogIGNoYW5nZXMkRGF0ZSA8LSB2YWx1ZXMkRGF0ZQogIHJldHVybnMkRGF0ZSA8LSB2YWx1ZXMkRGF0ZQoKICBwcmljZXNbc3ltYm9sXSA8LSB2YWx1ZXMkQ2xvc2UgCiAgY2hhbmdlc1tzeW1ib2xdIDwtIHZhbHVlcyRjaGFuZ2UKICByZXR1cm5zW3N5bWJvbF0gPC0gdmFsdWVzJHJldHVybnMKfQoKcHJpY2VzLnRlY2ggPC0gcHJpY2VzCmNoYW5nZXMudGVjaCA8LSBjaGFuZ2VzCnJldHVybnMudGVjaCA8LSByZXR1cm5zCmZvciAoZm5hbWUgaW4gbGlzdC5maWxlcyhwYXN0ZSgiZGF0YXNldHMvZGFpbHkvdGVjaCIsIHNlcCA9ICIvIikpKSB7CiAgc3ltYm9sIDwtIHN0cl9zcGxpdChmbmFtZSwgIlxcLiIsIHNpbXBsaWZ5ID0gVClbMV0KICB2YWx1ZXMgPC0gZnJlYWQocGFzdGUoImRhdGFzZXRzL2RhaWx5L3RlY2gvIiwgZm5hbWUsIHNlcCA9ICIvIikpICU+JSBmaWx0ZXIoRGF0ZSA+PSAiMjAxOS0wMS0wMSIgJiBEYXRlIDw9ICIyMDE5LTEyLTMxIikgJT4lIHNlbGVjdChhbGxfb2YocHJpY2VfY29scykpICU+JSBhcnJhbmdlKERhdGUpCgogICMgam9pbiB3aXRoIERhdGUgb2YgY29pbnMKICBwcmljZXMudGVjaCA8LSBpbm5lcl9qb2luKHggPSBwcmljZXMudGVjaCwgeSA9IHZhbHVlc1tjKCJEYXRlIiwgIkNsb3NlIildLCBieSA9ICJEYXRlIikgJT4lIGZpbGwoZXZlcnl0aGluZygpLCAuZGlyZWN0aW9uID0gImRvd251cCIpICU+JSBzZWxlY3RfaWYoY29sU3VtcyghaXMubmEoLikpID4gMCkKICBuYW1lcyhwcmljZXMudGVjaClbbGVuZ3RoKHByaWNlcy50ZWNoKV0gPC0gc3ltYm9sCiAgCiAgY2hhbmdlcy50ZWNoIDwtIGlubmVyX2pvaW4oeCA9IGNoYW5nZXMudGVjaCwgeSA9IHZhbHVlc1tjKCJEYXRlIiwgImNoYW5nZSIpXSwgYnkgPSAiRGF0ZSIpICU+JSBmaWxsKGV2ZXJ5dGhpbmcoKSwgLmRpcmVjdGlvbiA9ICJkb3dudXAiKSAlPiUgc2VsZWN0X2lmKGNvbFN1bXMoIWlzLm5hKC4pKSA+IDApCiAgbmFtZXMoY2hhbmdlcy50ZWNoKVtsZW5ndGgoY2hhbmdlcy50ZWNoKV0gPC0gc3ltYm9sCiAgCiAgcmV0dXJucy50ZWNoIDwtIGlubmVyX2pvaW4oeCA9IHJldHVybnMudGVjaCwgeSA9IHZhbHVlc1tjKCJEYXRlIiwgInJldHVybnMiKV0sIGJ5ID0gIkRhdGUiKSAlPiUgZmlsbChldmVyeXRoaW5nKCksIC5kaXJlY3Rpb24gPSAiZG93bnVwIikgJT4lIHNlbGVjdF9pZihjb2xTdW1zKCFpcy5uYSguKSkgPiAwKQogIG5hbWVzKHJldHVybnMudGVjaClbbGVuZ3RoKHJldHVybnMudGVjaCldIDwtIHN5bWJvbAp9CgpwcmljZXMuaW5kaWNlczwtIHByaWNlcwpjaGFuZ2VzLmluZGljZXMgPC0gY2hhbmdlcwpyZXR1cm5zLmluZGljZXMgPC0gcmV0dXJucwpmb3IgKGZuYW1lIGluIGxpc3QuZmlsZXMocGFzdGUoImRhdGFzZXRzL2RhaWx5L2luZGljZXMiLCBzZXAgPSAiLyIpKSkgewogIHN5bWJvbCA8LSBzdHJfc3BsaXQoZm5hbWUsICJcXC4iLCBzaW1wbGlmeSA9IFQpWzFdCiAgdmFsdWVzIDwtIGZyZWFkKHBhc3RlKCJkYXRhc2V0cy9kYWlseS9pbmRpY2VzLyIsIGZuYW1lLCBzZXAgPSAiLyIpKSAlPiUgZmlsdGVyKERhdGUgPj0gIjIwMTktMDEtMDEiICYgRGF0ZSA8PSAiMjAxOS0xMi0zMSIpICU+JSBzZWxlY3QoYWxsX29mKHByaWNlX2NvbHMpKSAlPiUgYXJyYW5nZShEYXRlKQoKICAjIGpvaW4gd2l0aCBEYXRlIG9mIGNvaW5zCiAgcHJpY2VzLmluZGljZXMgPC0gaW5uZXJfam9pbih4ID0gcHJpY2VzLmluZGljZXMsIHkgPSB2YWx1ZXNbYygiRGF0ZSIsICJDbG9zZSIpXSwgYnkgPSAiRGF0ZSIpICU+JSBmaWxsKGV2ZXJ5dGhpbmcoKSwgLmRpcmVjdGlvbiA9ICJkb3dudXAiKSAlPiUgc2VsZWN0X2lmKGNvbFN1bXMoIWlzLm5hKC4pKSA+IDApCiAgbmFtZXMocHJpY2VzLmluZGljZXMpW2xlbmd0aChwcmljZXMuaW5kaWNlcyldIDwtIHN5bWJvbAogIAogIGNoYW5nZXMuaW5kaWNlcyA8LSBpbm5lcl9qb2luKHggPSBjaGFuZ2VzLmluZGljZXMsIHkgPSB2YWx1ZXNbYygiRGF0ZSIsICJjaGFuZ2UiKV0sIGJ5ID0gIkRhdGUiKSAlPiUgZmlsbChldmVyeXRoaW5nKCksIC5kaXJlY3Rpb24gPSAiZG93bnVwIikgJT4lIHNlbGVjdF9pZihjb2xTdW1zKCFpcy5uYSguKSkgPiAwKQogIG5hbWVzKGNoYW5nZXMuaW5kaWNlcylbbGVuZ3RoKGNoYW5nZXMuaW5kaWNlcyldIDwtIHN5bWJvbAogIAogIHJldHVybnMuaW5kaWNlcyA8LSBpbm5lcl9qb2luKHggPSByZXR1cm5zLmluZGljZXMsIHkgPSB2YWx1ZXNbYygiRGF0ZSIsICJyZXR1cm5zIildLCBieSA9ICJEYXRlIikgJT4lIGZpbGwoZXZlcnl0aGluZygpLCAuZGlyZWN0aW9uID0gImRvd251cCIpICU+JSBzZWxlY3RfaWYoY29sU3VtcyghaXMubmEoLikpID4gMCkKICBuYW1lcyhyZXR1cm5zLmluZGljZXMpW2xlbmd0aChyZXR1cm5zLmluZGljZXMpXSA8LSBzeW1ib2wKfQoKIyBwcmljZXMuc3A1MDAgPC0gcHJpY2VzCiMgY2hhbmdlcy5zcDUwMCA8LSBjaGFuZ2VzCiMgcmV0dXJucy5zcDUwMCA8LSByZXR1cm5zCiMgZm9yIChmbmFtZSBpbiBsaXN0LmZpbGVzKHBhc3RlKCJkYXRhc2V0cy9kYWlseS9TJlBfNTAwIiwgc2VwID0gIi8iKSkpIHsKIyAgIHN5bWJvbCA8LSBzdHJfc3BsaXQoZm5hbWUsICJcXC4iLCBzaW1wbGlmeSA9IFQpWzFdCiMgICB2YWx1ZXMgPC0gZnJlYWQocGFzdGUoImRhdGFzZXRzL2RhaWx5L1MmUF81MDAiLCBmbmFtZSwgc2VwID0gIi8iKSkgJT4lIGZpbHRlcihEYXRlID49ICIyMDE5LTAxLTAxIiAmIERhdGUgPD0gIjIwMTktMTItMzEiKSAlPiUgc2VsZWN0KGFsbF9vZihwcmljZV9jb2xzKSkgJT4lIGFycmFuZ2UoRGF0ZSkKIyAKIyAgICMgam9pbiB3aXRoIERhdGUgb2YgY29pbnMKIyAgIHByaWNlcy5zcDUwMCA8LSBpbm5lcl9qb2luKHggPSBwcmljZXMuc3A1MDAsIHkgPSB2YWx1ZXNbYygiRGF0ZSIsICJDbG9zZSIpXSwgYnkgPSAiRGF0ZSIpICU+JSBmaWxsKGV2ZXJ5dGhpbmcoKSwgLmRpcmVjdGlvbiA9ICJkb3dudXAiKSAlPiUgc2VsZWN0X2lmKGNvbFN1bXMoIWlzLm5hKC4pKSA+IDApCiMgICBuYW1lcyhwcmljZXMuc3A1MDApW2xlbmd0aChwcmljZXMuc3A1MDApXSA8LSBzeW1ib2wKIyAgIAojICAgY2hhbmdlcy5zcDUwMCA8LSBpbm5lcl9qb2luKHggPSBjaGFuZ2VzLnNwNTAwLCB5ID0gdmFsdWVzW2MoIkRhdGUiLCAiY2hhbmdlIildLCBieSA9ICJEYXRlIikgJT4lIGZpbGwoZXZlcnl0aGluZygpLCAuZGlyZWN0aW9uID0gImRvd251cCIpICU+JSBzZWxlY3RfaWYoY29sU3VtcyghaXMubmEoLikpID4gMCkKIyAgIG5hbWVzKGNoYW5nZXMuc3A1MDApW2xlbmd0aChjaGFuZ2VzLnNwNTAwKV0gPC0gc3ltYm9sCiMgICAKIyAgIHJldHVybnMuc3A1MDAgPC0gaW5uZXJfam9pbih4ID0gcmV0dXJucy5zcDUwMCwgeSA9IHZhbHVlc1tjKCJEYXRlIiwgInJldHVybnMiKV0sIGJ5ID0gIkRhdGUiKSAlPiUgZmlsbChldmVyeXRoaW5nKCksIC5kaXJlY3Rpb24gPSAiZG93bnVwIikgJT4lIHNlbGVjdF9pZihjb2xTdW1zKCFpcy5uYSguKSkgPiAwKQojICAgbmFtZXMocmV0dXJucy5zcDUwMClbbGVuZ3RoKHJldHVybnMuc3A1MDApXSA8LSBzeW1ib2wKIyB9CgojIENvcnJlbGF0aW9uIEFuYWx5c2lzCmZvciAoYXNwZWN0IGluIGMoInByaWNlcyIsICJjaGFuZ2VzIiwgInJldHVybnMiKSkgewogIGZvciAoZmFjdG9yIGluIGMoInRlY2giLCAiaW5kaWNlcyIpKSB7ICMgLCAic3A1MDAiCiAgICBhc3BlY3QuZGF0YSA8LSBnZXQoYXNwZWN0KVstMV0KICAgIGNvci5kYXRhIDwtIGdldChwYXN0ZShhc3BlY3QsIGZhY3Rvciwgc2VwID0gIi4iKSlbLTFdCiAgICBjb3IubWF0cml4IDwtIGNvcl9tYXQoY29yLmRhdGEpICU+JSBjb3JfcmVvcmRlcigpCiAgICBjb3IubWF0cml4IDwtIGNvci5tYXRyaXggJT4lIHNlbGVjdChjKCJyb3duYW1lIiwgbmFtZXMoYXNwZWN0LmRhdGEpKSkgJT4lIGZpbHRlcighcm93bmFtZSAlaW4lIG5hbWVzKGFzcGVjdC5kYXRhKSkKICAgIGF0dHIoY29yLm1hdHJpeCwgInB2YWx1ZSIpIDwtIGF0dHIoY29yLm1hdHJpeCwgInB2YWx1ZSIpICU+JSBzZWxlY3QoYygicm93bmFtZSIsIG5hbWVzKGFzcGVjdC5kYXRhKSkpICU+JSBmaWx0ZXIoIXJvd25hbWUgJWluJSBuYW1lcyhhc3BlY3QuZGF0YSkpCiAgICBhc3NpZ24ocGFzdGUoYXNwZWN0LCBmYWN0b3IsICJjb3JyIiwgc2VwID0gIi4iKSwgY29yLm1hdHJpeCkKICAgIAogICAgY29yLm1hdHJpeC5wbG90IDwtIGdnY29ycnBsb3QoY29yLm1hdHJpeCwgcGNoLmNleCA9IDEpICsgbGFicyh4ID0gIlRpY2tlciIsIHkgPSAiQ3J5cHRvY3VycmVuY3kiKSArIGdndGl0bGUocGFzdGUoIkNvcnJlbGF0aW9uIGluIiwgYXNwZWN0KSkgKyB0aGVtZV9zZXR0aW5ncyArIGNlbnRlcl90aXRsZQogICAgYXNzaWduKHBhc3RlKGFzcGVjdCwgZmFjdG9yLCAiY29ycGxvdCIsIHNlcCA9ICIuIiksIGNvci5tYXRyaXgucGxvdCkKICAgIAogICAgdHMuZGF0YSA8LSBnZXQocGFzdGUoYXNwZWN0LCBmYWN0b3IsIHNlcCA9ICIuIikpCiAgICB0cy5kYXRhWy0xXSA8LSBzY2FsZSh0cy5kYXRhWy0xXSkKICAgIG1lbHQuZGF0YSA8LSByZXNoYXBlMjo6bWVsdCh0cy5kYXRhLCAiRGF0ZSIsIHZhbHVlLm5hbWUgPSAiVmFsdWVzIiwgdmFyaWFibGUubmFtZSA9ICJUaWNrZXIiKQogICAgYXNzaWduKHBhc3RlKGFzcGVjdCwgZmFjdG9yLCAibWVsdCIsIHNlcCA9ICIuIiksIG1lbHQuZGF0YSkKICAgIHByaW50KHBhc3RlKGFzcGVjdCwgZmFjdG9yLCAiZW5kZWQhIikpCiAgfQp9CgojIFZpc3VhbGl6YXRpb24KZm9yIChhc3BlY3QgaW4gYygicHJpY2VzIiwgImNoYW5nZXMiLCAicmV0dXJucyIpKSB7CiAgZm9yIChmYWN0b3IgaW4gYygidGVjaCIsICJpbmRpY2VzIikpIHsgIyAsICJzcDUwMCIKICAgIG1lbHQuZGF0YSA8LSBnZXQocGFzdGUoYXNwZWN0LCBmYWN0b3IsICJtZWx0Iiwgc2VwID0gIi4iKSkKICAgIHRzLmNoYXJ0IDwtIGdncGxvdChkYXRhID0gbWVsdC5kYXRhLCBhZXMoeCA9IERhdGUsIHkgPSBWYWx1ZXMsIGNvbG9yID0gVGlja2VyKSkgKwogICAgICBnZ3RpdGxlKHBhc3RlKCJNb3ZlbWVudCBvZiIsIGFzcGVjdCkpICsKICAgICAgZ2VvbV9saW5lKCkgKyAKICAgICAgY2VudGVyX3RpdGxlICsKICAgICAgZ3VpZGVzKGNvbCA9IGd1aWRlX2xlZ2VuZChuY29sID0gMzApKSArCiAgICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJib3R0b20iLCBsZWdlbmQuZGlyZWN0aW9uID0gInZlcnRpY2FsIikKICAgIGNvci5jaGFydCA8LSBnZXQocGFzdGUoYXNwZWN0LCBmYWN0b3IsICJjb3JwbG90Iiwgc2VwID0gIi4iKSkKICAgIHByaW50KHRzLmNoYXJ0KQogICAgcHJpbnQoY29yLmNoYXJ0KQogIH0KfQoKYGBgCgpQZXJpLUNPVklEMTkKYGBge3J9CgpgYGAKClBvc3QtQ09WSUQxOQpgYGB7cn0KCmBgYAoK